   1              		.syntax unified
   2              		.cpu cortex-m3
   3              		.fpu softvfp
   4              		.eabi_attribute 20, 1
   5              		.eabi_attribute 21, 1
   6              		.eabi_attribute 23, 3
   7              		.eabi_attribute 24, 1
   8              		.eabi_attribute 25, 1
   9              		.eabi_attribute 26, 1
  10              		.eabi_attribute 30, 4
  11              		.eabi_attribute 34, 1
  12              		.eabi_attribute 18, 4
  13              		.thumb
  14              		.syntax unified
  15              		.file	"lcd_drv.c"
  16              		.text
  17              	.Ltext0:
  18              		.cfi_sections	.debug_frame
  19              		.section	.text.lcd_config_ports,"ax",%progbits
  20              		.align	1
  21              		.global	lcd_config_ports
  22              		.thumb
  23              		.thumb_func
  25              	lcd_config_ports:
  26              	.LFB0:
  27              		.file 1 "uc_libc_dev/display/portable/arm_lpc/lcd_drv.c"
   1:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** #include "lcd_drv.h"
   2:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
   3:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** #if (LCD_CONNECTION == LCD_CONNECTION_PCF8574)
   4:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	Para o pcf8574 a comunicação é 4 bits e consideramos que as seguintes ligações:
   5:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		P0: LCD_D4
   6:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		P1: LCD_D5
   7:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		P2: LCD_D6
   8:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		P3: LCD_D7
   9:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		P4: LCD_RS
  10:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		P5: LCD_RW
  11:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		P6: LCD_E
  12:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
  13:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** // Lê um comando/dado do display.
  14:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	ATENÇÃO: Como o barramento I2C é lento, não precisamos de delays entre os comandos
  15:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		wr: 1: Sinaliza leitura
  16:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		e:	0: Disabilita acesso ao display
  17:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //			1: Habilita acesso ao display
  18:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** // 		rs: 0: Sinaliza ler um comando
  19:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //			1: Sinaliza ler um dado
  20:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** u8 lcd_read(u8 rs) {
  21:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// LCD    	   E  RW RS      DATA
  22:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// lpc8574 	D7 D6 D5 D4   D3 D2 D1 D0
  23:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	u8 lsn=0, msn=0;
  24:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	u8 cmd;
  25:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
  26:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// WR = 1
  27:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	cmd = 0x20;
  28:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	lcd_Send(LCD_ADDR_I2C, &cmd , 1);
  29:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	delay_us(LCD_DELAY);
  30:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
  31:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// RS = rs
  32:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (rs)	cmd |= 0x10;	// RS = 1
  33:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	lcd_Send(LCD_ADDR_I2C, &cmd , 1);
  34:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	delay_us(LCD_DELAY);
  35:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
  36:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// E = 1
  37:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	cmd |= 0x40;
  38:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	lcd_Send(LCD_ADDR_I2C, &cmd , 1);
  39:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	delay_us(LCD_DELAY);
  40:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
  41:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// Lê nibble alto do dado do BUS
  42:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	lcd_Receive(LCD_ADDR_I2C, &msn , 1);
  43:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
  44:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// E = 0
  45:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	cmd &= ~0x40;
  46:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	lcd_Send(LCD_ADDR_I2C, &cmd , 1);
  47:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	delay_us(LCD_DELAY);
  48:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
  49:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// E = 1
  50:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	cmd |= 0x40;
  51:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	lcd_Send(LCD_ADDR_I2C, &cmd , 1);
  52:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	delay_us(LCD_DELAY);
  53:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
  54:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// Lê nibble baixo do dado do BUS
  55:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	lcd_Receive(LCD_ADDR_I2C, &lsn , 1);
  56:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
  57:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// E = 0
  58:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	cmd &= ~0x40;
  59:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	lcd_Send(LCD_ADDR_I2C, &cmd , 1);
  60:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	delay_us(LCD_DELAY);
  61:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
  62:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	return ( (msn<<4) | lsn);
  63:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** }
  64:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
  65:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** // Escreve um comando ou dado no barramento do lcd.
  66:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	ATENÇÃO: Como o barramento I2C é lento, não precisamos de delays entre os comandos
  67:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		wr: 0: Sinaliza escrita
  68:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		e:	0: Disabilita acesso ao display
  69:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //			1: Habilita acesso ao display
  70:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** // 		rs: 0: Sinaliza escrever um comando
  71:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //			1:Sinaliza escrever um dado
  72:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** void lcd_write(u8 value, u8 rs, u8 dualAccess) {
  73:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// LCD    	   E  RW RS      DATA
  74:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// lpc8574 	D7 D6 D5 D4   D3 D2 D1 D0
  75:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	u8 cmd;
  76:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
  77:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// WR = 0
  78:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	cmd = 0;
  79:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	lcd_Send(LCD_ADDR_I2C, &cmd , 1);
  80:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	delay_us(LCD_DELAY);
  81:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
  82:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// RS = rs
  83:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (rs)	cmd |= 0x10;
  84:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	lcd_Send(LCD_ADDR_I2C, &cmd , 1); // RS = 1
  85:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	delay_us(LCD_DELAY);
  86:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
  87:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// BUS = nibble alto do dado
  88:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	cmd |= (value >> 4);
  89:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	lcd_Send(LCD_ADDR_I2C, &cmd , 1);
  90:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
  91:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// E = 1
  92:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	cmd |= 0x40;
  93:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	lcd_Send(LCD_ADDR_I2C, &cmd , 1);
  94:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	delay_us(LCD_DELAY);
  95:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// E = 0
  96:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	cmd &= ~0x40;
  97:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	lcd_Send(LCD_ADDR_I2C, &cmd , 1);
  98:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //	delay_us(LCD_DELAY);
  99:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 100:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (dualAccess) {
 101:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		// BUS = nibble baixo do dado
 102:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		cmd &= 0xF0;
 103:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		cmd |= (value&0xF);
 104:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		lcd_Send(LCD_ADDR_I2C, &cmd , 1);
 105:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 106:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		// E = 1
 107:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		cmd |= 0x40;
 108:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		lcd_Send(LCD_ADDR_I2C, &cmd , 1);
 109:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		delay_us(LCD_DELAY);
 110:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		// E = 0
 111:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		cmd &= ~0x40;
 112:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		lcd_Send(LCD_ADDR_I2C, &cmd , 1);
 113:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		delay_us(LCD_DELAY);
 114:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	}
 115:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** }
 116:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 117:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** #elif (LCD_CONNECTION == LCD_CONNECTION_GPIO_4BITS)
 118:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** void lcd_config_ports(void)	{
 119:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTDATA_DIR &= ~(LCD_PIN_D7|LCD_PIN_D6|LCD_PIN_D5|LCD_PIN_D4); // Pinos dos dados como entrad
 120:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_DIR |= (LCD_PIN_RS|LCD_PIN_WR|LCD_PIN_E); // Pinos de controle como saida
 121:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_CLR |= LCD_PIN_E;
 122:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** }
 123:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 124:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** // Lê um comando/dado do display
 125:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		wr: 1: Sinaliza leitura
 126:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		e:	0: Disabilita acesso ao display
 127:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //			1: Habilita acesso ao display
 128:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** // 		rs: 0: Sinaliza ler um comando
 129:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //			1: Sinaliza ler um dado
 130:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** u8 lcd_read(u8 rs) {
 131:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	u8 value = 0;
 132:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 133:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_SET = LCD_PIN_WR;			// WR = 1;
 134:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	delay_us(LCD_DELAY);
 135:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 136:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (rs)	LCD_PORTCTRL_SET = LCD_PIN_RS;	// RS = 1;
 137:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	else	LCD_PORTCTRL_CLR = LCD_PIN_RS;	// RS = 0;
 138:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	delay_us(LCD_DELAY);
 139:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 140:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_SET = LCD_PIN_E;			// E = 1
 141:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	delay_us(LCD_DELAY);
 142:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 143:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D7)		value|=0x80;
 144:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D6)		value|=0x40;
 145:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D5)		value|=0x20;
 146:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D4)		value|=0x10;
 147:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 148:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_CLR = LCD_PIN_E;			// E = 0
 149:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	delay_us(LCD_DELAY);
 150:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_SET = LCD_PIN_E;			// E = 1
 151:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	delay_us(LCD_DELAY);
 152:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 153:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D7)		value|=0x8;
 154:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D6)		value|=0x4;
 155:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D5)		value|=0x2;
 156:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D4)		value|=0x1;
 157:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 158:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_CLR = LCD_PIN_E;			// E = 0
 159:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	delay_us(LCD_DELAY);
 160:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	return value;
 161:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** }
 162:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 163:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** // Escreve um comando ou dado no barramento do lcd
 164:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		wr: 0: Sinaliza escrita
 165:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		e:	0: Disabilita acesso ao display
 166:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //			1: Habilita acesso ao display
 167:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** // 		rs: 0: Sinaliza escrever um comando
 168:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //			1:Sinaliza escrever um dado
 169:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** void lcd_write(u8 value, u8 rs, u8 dualAccess) {
 170:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTDATA_DIR |= (LCD_PIN_D7|LCD_PIN_D6|LCD_PIN_D5|LCD_PIN_D4); // Pinos dos dados como saida
 171:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 172:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_CLR = LCD_PIN_WR;			// WR = 0;
 173:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	delay_us(LCD_DELAY);
 174:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 175:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (rs)	LCD_PORTCTRL_SET = LCD_PIN_RS;	// RS = 1;
 176:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	else	LCD_PORTCTRL_CLR = LCD_PIN_RS;	// RS = 0;
 177:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	delay_us(LCD_DELAY);
 178:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 179:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x80) LCD_PORTDATA_SET = LCD_PIN_D7; else LCD_PORTDATA_CLR = LCD_PIN_D7;
 180:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x40) LCD_PORTDATA_SET = LCD_PIN_D6; else LCD_PORTDATA_CLR = LCD_PIN_D6;
 181:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x20) LCD_PORTDATA_SET = LCD_PIN_D5; else LCD_PORTDATA_CLR = LCD_PIN_D5;
 182:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x10) LCD_PORTDATA_SET = LCD_PIN_D4; else LCD_PORTDATA_CLR = LCD_PIN_D4;
 183:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 184:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_SET = LCD_PIN_E;	// E = 1
 185:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	delay_us(LCD_DELAY);
 186:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_CLR = LCD_PIN_E;	// E = 0
 187:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	delay_us(LCD_DELAY);
 188:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 189:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (dualAccess) {
 190:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		if (value&0x8) LCD_PORTDATA_SET = LCD_PIN_D7; else LCD_PORTDATA_CLR = LCD_PIN_D7;
 191:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		if (value&0x4) LCD_PORTDATA_SET = LCD_PIN_D6; else LCD_PORTDATA_CLR = LCD_PIN_D6;
 192:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		if (value&0x2) LCD_PORTDATA_SET = LCD_PIN_D5; else LCD_PORTDATA_CLR = LCD_PIN_D5;
 193:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		if (value&0x1) LCD_PORTDATA_SET = LCD_PIN_D4; else LCD_PORTDATA_CLR = LCD_PIN_D4;
 194:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 195:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		LCD_PORTCTRL_SET = LCD_PIN_E;	// E = 1
 196:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		delay_us(LCD_DELAY);
 197:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		LCD_PORTCTRL_CLR = LCD_PIN_E;	// E = 0
 198:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 		delay_us(LCD_DELAY);
 199:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	}
 200:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 201:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTDATA_DIR &= ~(LCD_PIN_D7|LCD_PIN_D6|LCD_PIN_D5|LCD_PIN_D4); // Pinos dos dados como entrad
 202:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** }
 203:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** #elif (LCD_CONNECTION == LCD_CONNECTION_GPIO_8BITS)
 204:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** void lcd_config_ports(void)	{
  28              		.loc 1 204 0
  29              		.cfi_startproc
  30              		@ args = 0, pretend = 0, frame = 0
  31              		@ frame_needed = 0, uses_anonymous_args = 0
  32              		@ link register save eliminated.
 205:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTDATA_DIR &= ~(LCD_PIN_D7|LCD_PIN_D6|LCD_PIN_D5|LCD_PIN_D4|LCD_PIN_D3|LCD_PIN_D2|LCD_PIN_D1
  33              		.loc 1 205 0
  34 0000 084A     		ldr	r2, .L2
  35 0002 1368     		ldr	r3, [r2]
  36 0004 23F47F73 		bic	r3, r3, #1020
  37 0008 1360     		str	r3, [r2]
 206:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_DIR |= (LCD_PIN_RS|LCD_PIN_WR|LCD_PIN_E); // Pinos de controle como saida
  38              		.loc 1 206 0
  39 000a 52F8203C 		ldr	r3, [r2, #-32]
  40 000e 43F0E073 		orr	r3, r3, #29360128
  41 0012 42F8203C 		str	r3, [r2, #-32]
 207:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_CLR |= LCD_PIN_E;
  42              		.loc 1 207 0
  43 0016 52F8043C 		ldr	r3, [r2, #-4]
  44 001a 43F08073 		orr	r3, r3, #16777216
  45 001e 42F8043C 		str	r3, [r2, #-4]
  46 0022 7047     		bx	lr
  47              	.L3:
  48              		.align	2
  49              	.L2:
  50 0024 40C00920 		.word	537509952
  51              		.cfi_endproc
  52              	.LFE0:
  54              		.section	.text.lcd_read,"ax",%progbits
  55              		.align	1
  56              		.global	lcd_read
  57              		.thumb
  58              		.thumb_func
  60              	lcd_read:
  61              	.LFB1:
 208:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** }
 209:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 210:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** // Lê um comando/dado do display
 211:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		wr: 1: Sinaliza leitura
 212:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		e:	0: Disabilita acesso ao display
 213:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //			1: Habilita acesso ao display
 214:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** // 		rs: 0: Sinaliza ler um comando
 215:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //			1: Sinaliza ler um dado
 216:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** u8 lcd_read(u8 rs) {
  62              		.loc 1 216 0
  63              		.cfi_startproc
  64              		@ args = 0, pretend = 0, frame = 0
  65              		@ frame_needed = 0, uses_anonymous_args = 0
  66              	.LVL0:
 217:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	u8 value = 0;
 218:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 219:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_SET = LCD_PIN_WR;			// WR = 1;
  67              		.loc 1 219 0
  68 0000 204B     		ldr	r3, .L38
  69 0002 4FF40002 		mov	r2, #8388608
 216:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	u8 value = 0;
  70              		.loc 1 216 0
  71 0006 10B5     		push	{r4, lr}
  72              	.LCFI0:
  73              		.cfi_def_cfa_offset 8
  74              		.cfi_offset 4, -8
  75              		.cfi_offset 14, -4
  76              		.loc 1 219 0
  77 0008 1A60     		str	r2, [r3]
  78 000a 1F4C     		ldr	r4, .L38+4
  79 000c 4FF48002 		mov	r2, #4194304
 220:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (rs)	LCD_PORTCTRL_SET = LCD_PIN_RS;	// RS = 1;
  80              		.loc 1 220 0
  81 0010 08B1     		cbz	r0, .L5
  82              		.loc 1 220 0 is_stmt 0 discriminator 1
  83 0012 1A60     		str	r2, [r3]
  84 0014 00E0     		b	.L6
  85              	.L5:
 221:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	else	LCD_PORTCTRL_CLR = LCD_PIN_RS;	// RS = 0;
  86              		.loc 1 221 0 is_stmt 1
  87 0016 2260     		str	r2, [r4]
  88              	.L6:
 222:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_SET = LCD_PIN_E;			// E = 1
  89              		.loc 1 222 0
  90 0018 4FF08072 		mov	r2, #16777216
 223:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	delay_us(LCD_DELAY);
  91              		.loc 1 223 0
  92 001c 2120     		movs	r0, #33
  93              	.LVL1:
 222:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_SET = LCD_PIN_E;			// E = 1
  94              		.loc 1 222 0
  95 001e 1A60     		str	r2, [r3]
  96              		.loc 1 223 0
  97 0020 FFF7FEFF 		bl	delay
  98              	.LVL2:
 224:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 225:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D7)		value|=0x80;
  99              		.loc 1 225 0
 100 0024 194B     		ldr	r3, .L38+8
 101 0026 1A68     		ldr	r2, [r3]
 102 0028 12F4007F 		tst	r2, #512
 226:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D6)		value|=0x40;
 103              		.loc 1 226 0
 104 002c 1A68     		ldr	r2, [r3]
 225:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D6)		value|=0x40;
 105              		.loc 1 225 0
 106 002e 0CBF     		ite	eq
 107 0030 0020     		moveq	r0, #0
 108 0032 8020     		movne	r0, #128
 109              	.LVL3:
 110              		.loc 1 226 0
 111 0034 D105     		lsls	r1, r2, #23
 227:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D5)		value|=0x20;
 112              		.loc 1 227 0
 113 0036 1A68     		ldr	r2, [r3]
 226:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D6)		value|=0x40;
 114              		.loc 1 226 0
 115 0038 44BF     		itt	mi
 116 003a 40F04000 		orrmi	r0, r0, #64
 117              	.LVL4:
 118 003e C0B2     		uxtbmi	r0, r0
 119              	.LVL5:
 120              		.loc 1 227 0
 121 0040 1206     		lsls	r2, r2, #24
 228:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D4)		value|=0x10;
 122              		.loc 1 228 0
 123 0042 1A68     		ldr	r2, [r3]
 227:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D5)		value|=0x20;
 124              		.loc 1 227 0
 125 0044 48BF     		it	mi
 126 0046 40F02000 		orrmi	r0, r0, #32
 127              	.LVL6:
 128              		.loc 1 228 0
 129 004a 5106     		lsls	r1, r2, #25
 229:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D3)		value|=0x08;
 130              		.loc 1 229 0
 131 004c 1A68     		ldr	r2, [r3]
 228:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D4)		value|=0x10;
 132              		.loc 1 228 0
 133 004e 48BF     		it	mi
 134 0050 40F01000 		orrmi	r0, r0, #16
 135              	.LVL7:
 136              		.loc 1 229 0
 137 0054 9206     		lsls	r2, r2, #26
 230:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D2)		value|=0x04;
 138              		.loc 1 230 0
 139 0056 1A68     		ldr	r2, [r3]
 229:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D3)		value|=0x08;
 140              		.loc 1 229 0
 141 0058 48BF     		it	mi
 142 005a 40F00800 		orrmi	r0, r0, #8
 143              	.LVL8:
 144              		.loc 1 230 0
 145 005e D106     		lsls	r1, r2, #27
 231:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D1)		value|=0x02;
 146              		.loc 1 231 0
 147 0060 1A68     		ldr	r2, [r3]
 232:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D0)		value|=0x01;
 148              		.loc 1 232 0
 149 0062 1B68     		ldr	r3, [r3]
 230:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D2)		value|=0x04;
 150              		.loc 1 230 0
 151 0064 48BF     		it	mi
 152 0066 40F00400 		orrmi	r0, r0, #4
 153              	.LVL9:
 231:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D1)		value|=0x02;
 154              		.loc 1 231 0
 155 006a 1207     		lsls	r2, r2, #28
 156 006c 48BF     		it	mi
 157 006e 40F00200 		orrmi	r0, r0, #2
 158              	.LVL10:
 159              		.loc 1 232 0
 160 0072 5B07     		lsls	r3, r3, #29
 233:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 234:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_CLR = LCD_PIN_E;			// E = 0
 161              		.loc 1 234 0
 162 0074 4FF08073 		mov	r3, #16777216
 232:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (LCD_PORTDATA_IN&LCD_PIN_D0)		value|=0x01;
 163              		.loc 1 232 0
 164 0078 48BF     		it	mi
 165 007a 40F00100 		orrmi	r0, r0, #1
 166              	.LVL11:
 167              		.loc 1 234 0
 168 007e 2360     		str	r3, [r4]
 235:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 236:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	return value;
 237:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** }
 169              		.loc 1 237 0
 170 0080 10BD     		pop	{r4, pc}
 171              	.L39:
 172 0082 00BF     		.align	2
 173              	.L38:
 174 0084 38C00920 		.word	537509944
 175 0088 3CC00920 		.word	537509948
 176 008c 54C00920 		.word	537509972
 177              		.cfi_endproc
 178              	.LFE1:
 180              		.section	.text.lcd_write,"ax",%progbits
 181              		.align	1
 182              		.global	lcd_write
 183              		.thumb
 184              		.thumb_func
 186              	lcd_write:
 187              	.LFB2:
 238:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 239:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** // Escreve um comando ou dado no barramento do lcd
 240:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		wr: 0: Sinaliza escrita
 241:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //		e:	0: Disabilita acesso ao display
 242:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //			1: Habilita acesso ao display
 243:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** // 		rs: 0: Sinaliza escrever um comando
 244:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** //			1:Sinaliza escrever um dado
 245:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** void lcd_write(u8 value, u8 rs) {
 188              		.loc 1 245 0
 189              		.cfi_startproc
 190              		@ args = 0, pretend = 0, frame = 0
 191              		@ frame_needed = 0, uses_anonymous_args = 0
 192              	.LVL12:
 246:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTDATA_DIR |= (LCD_PIN_D7|LCD_PIN_D6|LCD_PIN_D5|LCD_PIN_D4|LCD_PIN_D3|LCD_PIN_D2|LCD_PIN_D1|
 193              		.loc 1 246 0
 194 0000 2D4B     		ldr	r3, .L67
 245:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTDATA_DIR |= (LCD_PIN_D7|LCD_PIN_D6|LCD_PIN_D5|LCD_PIN_D4|LCD_PIN_D3|LCD_PIN_D2|LCD_PIN_D1|
 195              		.loc 1 245 0
 196 0002 70B5     		push	{r4, r5, r6, lr}
 197              	.LCFI1:
 198              		.cfi_def_cfa_offset 16
 199              		.cfi_offset 4, -16
 200              		.cfi_offset 5, -12
 201              		.cfi_offset 6, -8
 202              		.cfi_offset 14, -4
 203              		.loc 1 246 0
 204 0004 1A68     		ldr	r2, [r3]
 247:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_CLR = LCD_PIN_WR;			// WR = 0;
 205              		.loc 1 247 0
 206 0006 2D4C     		ldr	r4, .L67+4
 246:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTDATA_DIR |= (LCD_PIN_D7|LCD_PIN_D6|LCD_PIN_D5|LCD_PIN_D4|LCD_PIN_D3|LCD_PIN_D2|LCD_PIN_D1|
 207              		.loc 1 246 0
 208 0008 42F47F72 		orr	r2, r2, #1020
 209 000c 1A60     		str	r2, [r3]
 210              		.loc 1 247 0
 211 000e 4FF40002 		mov	r2, #8388608
 212 0012 2260     		str	r2, [r4]
 213 0014 1D46     		mov	r5, r3
 214 0016 4FF48002 		mov	r2, #4194304
 215 001a 083B     		subs	r3, r3, #8
 248:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 249:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (rs)	LCD_PORTCTRL_SET = LCD_PIN_RS;	// RS = 1;
 216              		.loc 1 249 0
 217 001c 09B1     		cbz	r1, .L41
 218              		.loc 1 249 0 is_stmt 0 discriminator 1
 219 001e 1A60     		str	r2, [r3]
 220 0020 00E0     		b	.L42
 221              	.L41:
 250:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	else	LCD_PORTCTRL_CLR = LCD_PIN_RS;	// RS = 0;
 222              		.loc 1 250 0 is_stmt 1
 223 0022 2260     		str	r2, [r4]
 224              	.L42:
 251:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 252:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	// Atualizar barramento do LCD com o valor do registrador
 253:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x80) LCD_PORTDATA_SET = LCD_PIN_D7; else LCD_PORTDATA_CLR = LCD_PIN_D7;
 225              		.loc 1 253 0
 226 0024 10F0800F 		tst	r0, #128
 227 0028 14BF     		ite	ne
 228 002a 2549     		ldrne	r1, .L67+8
 229              	.LVL13:
 230 002c 2549     		ldreq	r1, .L67+12
 231 002e 4FF40072 		mov	r2, #512
 254:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x40) LCD_PORTDATA_SET = LCD_PIN_D6; else LCD_PORTDATA_CLR = LCD_PIN_D6;
 232              		.loc 1 254 0
 233 0032 10F0400F 		tst	r0, #64
 253:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x40) LCD_PORTDATA_SET = LCD_PIN_D6; else LCD_PORTDATA_CLR = LCD_PIN_D6;
 234              		.loc 1 253 0
 235 0036 0A60     		str	r2, [r1]
 236              		.loc 1 254 0
 237 0038 14BF     		ite	ne
 238 003a 2149     		ldrne	r1, .L67+8
 239 003c 2149     		ldreq	r1, .L67+12
 240 003e 4FF48072 		mov	r2, #256
 255:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x20) LCD_PORTDATA_SET = LCD_PIN_D5; else LCD_PORTDATA_CLR = LCD_PIN_D5;
 241              		.loc 1 255 0
 242 0042 10F0200F 		tst	r0, #32
 254:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x40) LCD_PORTDATA_SET = LCD_PIN_D6; else LCD_PORTDATA_CLR = LCD_PIN_D6;
 243              		.loc 1 254 0
 244 0046 0A60     		str	r2, [r1]
 245              		.loc 1 255 0
 246 0048 14BF     		ite	ne
 247 004a 1D49     		ldrne	r1, .L67+8
 248 004c 1D49     		ldreq	r1, .L67+12
 249 004e 8022     		movs	r2, #128
 256:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x10) LCD_PORTDATA_SET = LCD_PIN_D4; else LCD_PORTDATA_CLR = LCD_PIN_D4;
 250              		.loc 1 256 0
 251 0050 10F0100F 		tst	r0, #16
 255:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x20) LCD_PORTDATA_SET = LCD_PIN_D5; else LCD_PORTDATA_CLR = LCD_PIN_D5;
 252              		.loc 1 255 0
 253 0054 0A60     		str	r2, [r1]
 254              		.loc 1 256 0
 255 0056 14BF     		ite	ne
 256 0058 1949     		ldrne	r1, .L67+8
 257 005a 1A49     		ldreq	r1, .L67+12
 258 005c 4022     		movs	r2, #64
 257:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x08) LCD_PORTDATA_SET = LCD_PIN_D3; else LCD_PORTDATA_CLR = LCD_PIN_D3;
 259              		.loc 1 257 0
 260 005e 10F0080F 		tst	r0, #8
 256:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x10) LCD_PORTDATA_SET = LCD_PIN_D4; else LCD_PORTDATA_CLR = LCD_PIN_D4;
 261              		.loc 1 256 0
 262 0062 0A60     		str	r2, [r1]
 263              		.loc 1 257 0
 264 0064 14BF     		ite	ne
 265 0066 1649     		ldrne	r1, .L67+8
 266 0068 1649     		ldreq	r1, .L67+12
 267 006a 2022     		movs	r2, #32
 258:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x04) LCD_PORTDATA_SET = LCD_PIN_D2; else LCD_PORTDATA_CLR = LCD_PIN_D2;
 268              		.loc 1 258 0
 269 006c 10F0040F 		tst	r0, #4
 257:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x08) LCD_PORTDATA_SET = LCD_PIN_D3; else LCD_PORTDATA_CLR = LCD_PIN_D3;
 270              		.loc 1 257 0
 271 0070 0A60     		str	r2, [r1]
 272              		.loc 1 258 0
 273 0072 14BF     		ite	ne
 274 0074 1249     		ldrne	r1, .L67+8
 275 0076 1349     		ldreq	r1, .L67+12
 276 0078 1022     		movs	r2, #16
 259:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x02) LCD_PORTDATA_SET = LCD_PIN_D1; else LCD_PORTDATA_CLR = LCD_PIN_D1;
 277              		.loc 1 259 0
 278 007a 10F0020F 		tst	r0, #2
 258:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x04) LCD_PORTDATA_SET = LCD_PIN_D2; else LCD_PORTDATA_CLR = LCD_PIN_D2;
 279              		.loc 1 258 0
 280 007e 0A60     		str	r2, [r1]
 281              		.loc 1 259 0
 282 0080 14BF     		ite	ne
 283 0082 0F49     		ldrne	r1, .L67+8
 284 0084 0F49     		ldreq	r1, .L67+12
 285 0086 0822     		movs	r2, #8
 260:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x01) LCD_PORTDATA_SET = LCD_PIN_D0; else LCD_PORTDATA_CLR = LCD_PIN_D0;
 286              		.loc 1 260 0
 287 0088 10F0010F 		tst	r0, #1
 259:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x02) LCD_PORTDATA_SET = LCD_PIN_D1; else LCD_PORTDATA_CLR = LCD_PIN_D1;
 288              		.loc 1 259 0
 289 008c 0A60     		str	r2, [r1]
 290              		.loc 1 260 0
 291 008e 14BF     		ite	ne
 292 0090 0B49     		ldrne	r1, .L67+8
 293 0092 0C49     		ldreq	r1, .L67+12
 294 0094 0422     		movs	r2, #4
 261:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 
 262:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_SET = LCD_PIN_E;	// E = 1
 295              		.loc 1 262 0
 296 0096 4FF08076 		mov	r6, #16777216
 260:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	if (value&0x01) LCD_PORTDATA_SET = LCD_PIN_D0; else LCD_PORTDATA_CLR = LCD_PIN_D0;
 297              		.loc 1 260 0
 298 009a 0A60     		str	r2, [r1]
 263:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	delay_us(LCD_DELAY);
 299              		.loc 1 263 0
 300 009c 2120     		movs	r0, #33
 301              	.LVL14:
 262:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	delay_us(LCD_DELAY);
 302              		.loc 1 262 0
 303 009e 1E60     		str	r6, [r3]
 304              		.loc 1 263 0
 305 00a0 FFF7FEFF 		bl	delay
 306              	.LVL15:
 264:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTCTRL_CLR = LCD_PIN_E;	// E = 0
 307              		.loc 1 264 0
 308 00a4 2660     		str	r6, [r4]
 265:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	delay_us(LCD_DELAY);
 309              		.loc 1 265 0
 310 00a6 2120     		movs	r0, #33
 311 00a8 FFF7FEFF 		bl	delay
 312              	.LVL16:
 266:uc_libc_dev/display/portable/arm_lpc/lcd_drv.c **** 	LCD_PORTDATA_DIR &= ~(LCD_PIN_D7|LCD_PIN_D6|LCD_PIN_D5|LCD_PIN_D4|LCD_PIN_D3|LCD_PIN_D2|LCD_PIN_D1
 313              		.loc 1 266 0
 314 00ac 2B68     		ldr	r3, [r5]
 315 00ae 23F47F73 		bic	r3, r3, #1020
 316 00b2 2B60     		str	r3, [r5]
 317 00b4 70BD     		pop	{r4, r5, r6, pc}
 318              	.L68:
 319 00b6 00BF     		.align	2
 320              	.L67:
 321 00b8 40C00920 		.word	537509952
 322 00bc 3CC00920 		.word	537509948
 323 00c0 58C00920 		.word	537509976
 324 00c4 5CC00920 		.word	537509980
 325              		.cfi_endproc
 326              	.LFE2:
 328              		.text
 329              	.Letext0:
 330              		.file 2 "uc_libc_dev/_libdef/uc_libdefs.h"
 331              		.file 3 "uc_libc_dev/_arch/arm_lpc/timer/delay.h"
DEFINED SYMBOLS
                            *ABS*:00000000 lcd_drv.c
D:\_temp\_windows\ccoJCHcM.s:20     .text.lcd_config_ports:00000000 $t
D:\_temp\_windows\ccoJCHcM.s:25     .text.lcd_config_ports:00000000 lcd_config_ports
D:\_temp\_windows\ccoJCHcM.s:50     .text.lcd_config_ports:00000024 $d
D:\_temp\_windows\ccoJCHcM.s:55     .text.lcd_read:00000000 $t
D:\_temp\_windows\ccoJCHcM.s:60     .text.lcd_read:00000000 lcd_read
D:\_temp\_windows\ccoJCHcM.s:174    .text.lcd_read:00000084 $d
D:\_temp\_windows\ccoJCHcM.s:181    .text.lcd_write:00000000 $t
D:\_temp\_windows\ccoJCHcM.s:186    .text.lcd_write:00000000 lcd_write
D:\_temp\_windows\ccoJCHcM.s:321    .text.lcd_write:000000b8 $d
                     .debug_frame:00000010 $d

UNDEFINED SYMBOLS
delay
